/* -*-jde-*- */
package app.administrador;

import app.conexion.Conexion;
import app.conexion.ConexionException;
import app.util.appException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;

/**
 * Da información relacionada con la base de datos
 *
 * @author Victor Miguel Peralta Santa Anna
 * @since Enero 2012
 * @version 0.1
 */
@ManagedBean(name = "infoBase")
@SessionScoped
public class InfoBase implements Serializable {

    private String totalAlumnos;
    private String totalEmpresas;
    private String totalVacantes;
    private String totalPostulados;

    /**
     * Desplegamos la información actual del contenido de la base de datos.
     *
     * @throws appException
     */
    public InfoBase() throws appException {

        this.totalAlumnos = getTotalAlumnos();
        this.totalEmpresas = getTotalEmpresas();
        this.totalPostulados = getTotalPostulados();
        this.totalVacantes = getTotalVacantes();

    }

    public static void main(String args[]) throws appException {
        InfoBase ifb = new InfoBase();
        System.out.println(ifb.getTotalAlumnos());
    }

    /**
     * Regresa el total de alumnos
     *
     * @return
     * @throws appException
     */
    public String getTotalPostulados() throws appException {
        try {

            Conexion con = new Conexion();

            String query = "select countAlumnos();";

            ResultSet r = con.exec(query);

            r.next();
            String total = r.getString("countalumnos");


            con.close();

            return total;

        } catch (SQLException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo recuperar el total de postulados");
        } catch (ConexionException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo recuperar el total de postulados");
        }
    }

    /**
     * Regresa el total de vacantes
     *
     * @return
     * @throws appException
     */
    public String getTotalVacantes() throws appException {
        try {

            Conexion con = new Conexion();

            String query = "select countVacantes();";

            ResultSet r = con.exec(query);

            r.next();
            String total = r.getString("countvacantes");


            con.close();

            return total;

        } catch (SQLException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo recuperar el total de vacantes");
        } catch (ConexionException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo recuperar el total de vacantes");
        }
    }

    /**
     * Regresa el total de empresas activas
     *
     * @return
     * @throws appException
     */
    public String getTotalEmpresas() throws appException {
        try {

            Conexion con = new Conexion();

            String query = "select countEmpresas();";

            ResultSet r = con.exec(query);

            r.next();
            String total = r.getString("countempresas");


            con.close();

            return total;

        } catch (SQLException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo recuperar el total de empresas");
        } catch (ConexionException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo recuperar el total de empresas");
        }
    }

    /**
     * Regresa el total de alumnos
     *
     * @return
     * @throws appException
     */
    public String getTotalAlumnos() throws appException {
        try {

            Conexion con = new Conexion();

            String query = "select countAlumnos();";

            ResultSet r = con.exec(query);

            r.next();
            String total = r.getString("countalumnos");


            con.close();

            return total;

        } catch (SQLException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo recuperar el total de alumnos");
        } catch (ConexionException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo recuperar el total de alumnos");
        }
    }

    /**
     * @param totalAlumnos the totalAlumnos to set
     */
    public void setTotalAlumnos(String totalAlumnos) {
        this.totalAlumnos = totalAlumnos;
    }

    /**
     * @param totalEmpresas the totalEmpresas to set
     */
    public void setTotalEmpresas(String totalEmpresas) {
        this.totalEmpresas = totalEmpresas;
    }

    /**
     * @param totalVacantes the totalVacantes to set
     */
    public void setTotalVacantes(String totalVacantes) {
        this.totalVacantes = totalVacantes;
    }

    /**
     * @param totalPostulados the totalPostulados to set
     */
    public void setTotalPostulados(String totalPostulados) {
        this.totalPostulados = totalPostulados;
    }
}
